Despite advances in computer vision, image processing, and machine learning, recognizing visual objects remains a task where computers fail in comparison with the capabilities of human. Recognizing an object from an image not only requires recognizing the image in a scene but also recognizing objects in various positions, in different settings, and with slight variations. For example, to recognize a chair, the innate properties that make a chair a chair must be understood. This is a simple task for a human. Computers struggle to deal with the vast variety of types of chairs and the situations in which a chair may be present. The problem is even more challenging when considering the problem of detecting multiple objects in a scene. Models capable of performing visual object recognition must be able to provide explanations for visual datasets in order to recognize objects present in those visual datasets. Visual object recognition is a specific case of a more general problem in artificial intelligence: pattern recognition (and its inverse, pattern generation). Pattern recognition is a problem in other fields and mediums outside of image processing such as speech recognition, natural language processing, and other fields. Thus, there is a need in the artificial intelligence field to create new and useful methods for generating data explanations for neural networks and related systems. This invention provides such new and useful methods.